Users of computing devices (e.g., laptops, cellular phones, and personal digital assistants) often need to communicate in real time. A common form of real-time communications is provided by instant messaging services. An instant messaging service allows participants at endpoints to send messages and have them received within a second or two by the other participants in a conversation. The receiving participants can then send responsive messages to the other participants in a similar manner. To be effective, a real-time conversation relies on the participants' becoming aware of, reviewing, and responding to received messages very quickly. This quick response is in contrast to conventional electronic mail systems in which the recipients of electronic mail messages respond to messages at their convenience.
When an initiating participant wants to start a real-time conversation, that participant needs to know whether the intended participants are available to respond in real time to a message. If not, then communications via conventional electronic mail, voice mail, or some other mechanism may be more appropriate. For example, if the computing devices of the intended participants are currently powered off, then a real-time conversation may not be possible. Moreover, if their computing devices are currently powered on, but the intended participants are away from their computing devices, a real-time conversation is also not possible.
Presence services provide availability information of users so that an appropriate decision on the form of communication can be made by an initiating participant. The availability status of an entity such as a computing device or a user associated with a computing device is referred to as “presence information.” Presence information identifies the current “presence state” of the user. Users make their presence information available to a presence service so that other users can decide how best to communicate with them. For example, the presence information may indicate whether a user is logged on (“online”) with an instant messaging server or is logged off (“offline”). Presence information may also provide more detailed information about the availability of the user. For example, even though a user is online, that user may be away from their computing device in a meeting. In such a case, the presence state may indicate “online” and “in a meeting.”
A presence service may provide a presence server for distributing presence information. A publishing user (“publisher”) may run client software that provides their presence information to a presence server that then provides the presence information to subscribing users (“subscribers”). Thus, a presence server may use a subscriber/publisher model to provide the presence information for the users of the presence service. Whenever the presence information of a user changes, the presence server is notified of the change by that user's client software and in turn notifies the subscribing users of the change. A subscribing user can then decide whether to initiate a real-time communication and the type to initiate based on the presence information of the intended participants. For example, if the presence information indicates that a publishing user is currently in a conference telephone call, then the subscribing user may decide to send an instant message, rather than place a telephone call, to the publishing user. RFC 2778, entitled “A Model for Presence and Instant Messaging,” is a specification relating to presence information in instant messaging systems. RFC 3856, entitled “A Presence Event Package for the Session Initiation Protocol,” is a specification relating to presence information using the Session Initiation Protocol (“SIP”).
In many circumstances, a receiving participant appears to be available such that an initiating participant will send the receiving participant a message and attempt to start a conversation, when the receiving participant is not in fact available to receive the communication. In such circumstances, the message sent by the initiating participant is lost without ever reaching the receiving participant. For example, when the receiving participant has just stepped away from his desk, the initiating participant's client software may still indicate that the receiving participant is available, and the initiating participant may send a message to the receiving participant. The receiving participant's client software may receive the message and display it briefly through a notification window (sometimes called a “toast”), or by creating a conversation window. However, the receiving participant may never see the message. Likewise, the initiating participant may assume that the message was seen by the receiving participant, and have no indication to the contrary. The receiving participant may miss important information conveyed by the missed message, such as a new location for an upcoming meeting.